package com.sojson.project.sys.role.entity.po;

import java.util.Set;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.sojson.base.impl.BaseLogicDelBean;
import com.sojson.enums.core.EGeneralStatus;
import com.sojson.enums.core.EMenuCheckStrictly;
import com.sojson.util.StringUtil;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 角色信息表Bean
 * 
 * @author liu
 * @date 2022-09-16
 */
@Data
@ApiModel("角色信息表Bean")
@TableName("sys_role")
public class Role extends BaseLogicDelBean {

    private static final long serialVersionUID = 1L;
    /** 角色主键 */
    @ApiModelProperty("角色主键")
    private String id;
    /** 角色名称 */
    @ApiModelProperty("角色名称")
    private String name;
    /** 角色权限字符串 */
    @TableField("`KEY`")
    @ApiModelProperty("角色权限字符串")
    private String key;
    /** 显示顺序 */
    @ApiModelProperty("显示顺序")
    private Integer sortNum;
    /** 菜单树选择项是否关联显示(1:是,0:否) */
    @ApiModelProperty("菜单树选择项是否关联显示(1:是,0:否)")
    private Boolean menuCheckStrictly;
    /** 菜单环境(web_admin:后台管理员,web_merchant:后台商户,app_user:App用户,xcx_user:小程序用户) */
    @ApiModelProperty("菜单环境(web_admin:后台管理员,web_merchant:后台商户,app_user:App用户,xcx_user:小程序用户)")
    private String environment;
    /** 角色状态（1正常 2停用） */
    @ApiModelProperty("角色状态（1正常 2停用）")
    private Integer status;
    /** 备注 */
    @ApiModelProperty("备注")
    private String remark;
    /** 菜单ID集合 */
    @TableField(exist = false)
    @ApiModelProperty("菜单ID集合")
    private Set<String> menuIds;

    public Role() {

    }

    /**
     * 插入初始化
     */
    public void insertInit() {
        if (StringUtil.isBlankObject(getSortNum())) {
            setSortNum(100);
        }
        if (StringUtil.isBlankObject(getStatus())) {
            setStatus(EGeneralStatus.NORMAL.getCode());
        }
        if (StringUtil.isBlankObject(getMenuCheckStrictly())) {
            setMenuCheckStrictly(EMenuCheckStrictly.NO.getCode());
        }
    }

    /**
     * 更新初始化
     */
    public void updateInit() {
        setUpdateNull();
    }

    /**
     * 更新初始化
     */
    public void setUpdateNull() {
        setKey(null);
        setEnvironment(null);
    }

}